iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
Software Development

邁向專業軟體工程師必修的英文課系列 第 17

Day 17 - [形容詞二] 完全主觀的個人意見,談true or false

  • 分享至 

  • xImage
  •  

https://i.imgflip.com/4fbdp2.jpg
這是完全主觀的想法寫這篇,我會說明原因,以及我的觀點。
我是一個很喜歡寫口語程式的人,就是希望我的程式在撰寫的時候會像寫文章一樣順暢,原因很簡單:我不喜歡寫文件,也不喜歡寫註解。能在程式裡看出整個程式的邏輯是我寫程式的最高原則。
反正三個月之後我再回來看可能都忘記了為什麼這樣寫,何不一開始就寫好一點?所以變數命名很重要,像這段程式,基本上不用太多描述,就可以知道要做什麼。

    if(user.IsLogin)
    {
        Redirect.To($"/{user.Name}");
    }

但相對於上面的片段,我有可能寫成:

    if(user.IsLogin == false)
    {
        service.LoginUser(token);
    }

這種寫法很討人厭
https://media.tenor.com/images/7ed9299863dba27093edc340aa2bc573/tenor.gif
通常建議的寫法是

    if(!user.IsLogin)
    {
        service.LoginUser(token);
    }

但我認為這兩種寫法代表完全不同的意義。

先從驚嘆號開始說好了,通常驚嘆號的意思是not,就是把前面一個boolean值調換,如果是true就變成false,反之亦然。
https://ithelp.ithome.com.tw/upload/images/20200917/20111458fdGExr9iqO.png
所以他是一個運算符號(Unary operators),不是一個關係符號(Equality operators)。換句話說,以語意來看,這句話其實並沒有說完,整句話的意思是:當這個boolean相反。

或者另一種說法好了,當在這個boolean前加一個!之後,其實己經更動了它原本的意思再去做判斷,我認為這個做法並不恰當,因為當加了not之後,這個值的保真度(fidelity)己經消失了。
通常不會(但也有可能)這樣寫程式吧.

    if(user.Age - 18 <= 0)
    {
    }

那什麼時候會到!呢?之後會講到,但簡單說就是這個值要變成另一個值的時候,例如

    bool CanGetSpecialDiscount = !user.IsVIP;

這時候很明顯的是要做一次運算,然後再賦值,這時候用not(!)就很合理。

不知道大家的看法怎麼樣,有沒有團隊會特別規定怎麼寫這種判斷式呢?主觀上我認為雖然語法上可讀,但意義上其實天南地北,如果你們看到文件裡規定要寫出完整判斷式,會去挑戰它嗎?


上一篇
Day 16 - [形容詞] Access Modifiers
下一篇
Day 18 - [副詞] Not,你的變數被旋轉了嗎?
系列文
邁向專業軟體工程師必修的英文課30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言